/**
 * 单个值的json数组合并为以数组为值的json
 * 
 * @memberof data
 * 
 * @param {Object} json 单个值的json数组
 * @param {Object} fmt json的key 和 value 字段取值，默认{key:'name',value:'value'}
 * 
 * @returns 合并后的 json 
 * 
 * @example  
 * toArray([{name:'zhangsan',value:10},{name:'lisi',value:20}]);
 * // {name:['zhangsan','lisi'],value:[10,20]}
 */
function toArray(json,fmt) {
    fmt = fmt || {key:'name',value:'value'}
    
    const { isType } = this
    
    if(!isType(json,'Object')){
        console.warn('function toArray() input value should be json')
        return json
    }
    
    let array =  []
    json[fmt.key].forEach((item,index)=>{
        let j = {}
        j[fmt.key] = item 
        j[fmt.value] = json[fmt.value][index] || undefined 
        array.push(j)
    })
    
    return array
}
/**
 *  以数组为值的json拆分为单个值的json数组
 * 
 * @memberof data
 * 
 * @param {Array} array 以数组为值的json
 * 
 * @returns 拆分后的 json数组
 * 
 * @example  
 * toJson({name:['zhangsan','lisi'],value:[10,20]}); 
 * // [{name:'zhangsan',value:10},{name:'lisi',value:20}]
 */
function toJson(array) {
    let json = {}
    const { isType } = this
    
    if(!isType(array,'Array')){
        console.warn('function toArray() input value should be Array')
        return json
    }
    
    array.forEach(item=>{
        for(let i in item){
            if(json[i]){
                json[i].push(item[i])
            }else{
                json[i] = [item[i]]
            }
        }
    })
    
    return json
}
module.exports.toArray = toArray
module.exports.toJson = toJson

